Signed-off-by: Grzegorz Milos <Grzegorz.Milos@citrix.com>
return 1;
}
+ /* Mem sharing: unshare the page and try again */
+ if ( p2mt == p2m_ram_shared )
+ {
+ mem_sharing_unshare_page(current->domain, gfn, 0);
+ return 1;
+ }
+
/* Shouldn't happen: Maybe the guest was writing to a r/o grant mapping? */
if ( p2mt == p2m_grant_map_ro )
{
#include <asm/io.h>
#include <asm/paging.h>
#include <asm/p2m.h>
+#include <asm/mem_sharing.h>
#include <asm/regs.h>
#include <asm/cpufeature.h>
#include <asm/processor.h>
#include <asm/spinlock.h>
#include <asm/paging.h>
#include <asm/p2m.h>
+#include <asm/mem_sharing.h>
#include <asm/hvm/emulate.h>
#include <asm/hvm/hvm.h>
#include <asm/hvm/support.h>
return;
case p2m_ram_logdirty:
case p2m_ram_ro:
+ case p2m_ram_shared:
entry->r = entry->x = 1;
entry->w = 0;
return;
case p2m_ram_ro:
case p2m_grant_map_ro:
return flags | P2M_BASE_FLAGS;
+ case p2m_ram_shared:
+ return flags | P2M_BASE_FLAGS;
case p2m_mmio_dm:
return flags;
case p2m_mmio_direct: